@string{NSDI=    "USENIX Symposium on Networked Systems Design & Implementation (NSDI)"},
@string{CCS =    "ACM Conference on Computer and Communication Security (CCS)"},
@string{SAT =    "International Conference on Theory and Applications of Satisfiability Testing (SAT)"},
@string{WWW =    "International conference on World Wide Web (WWW)"},
@string{SIGMETRICS = "International Conference on Measurement & Modeling of Computer Systems (SIGMETRICS)"},
@string{ISPASS= "IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS)"},
@string{LICS=   "IEEE Symposium on Logic In Computer Science (LICS)"},
@string{FAST=   "USENIX Conference on File and Storage Technologies (FAST)"},
@string{WDDD=   "Workshop on Duplicating, Deconstruction and Debunking (WDDD)"},
@string{PODS=   "Symposium on Principles of Database Systems (PODS)"},
@string{WASP=   "Workshop on Application-Specific Processors (WASP)"},
@string{OOPSLA=	"Object Oriented Programming: Systems, Languages, and Applications (OOPSLA)"},
@string{POPL=	"ACM Symposium on Principles of Programming Languages (POPL)"},
@string{PLDI=	"ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)"},
@string{ISCA=	"International Symposium on Computer Architecture (ISCA)"},
@string{DAC=	"Design Automation Conference (DAC)"},
@string{DATE=   "Design, Automation and Test in Europe (DATE)"},
@string{RAW=    "Reconfigurable Architectures Workshop (RAW)"},
@string{ASPLOS= "International Conference on Architectural Support for Programming Languages and
                  Operating Systems (ASPLOS)"},
@string{FCCM=   "IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM)"},
@string{FPGA=   "ACM/SIGDA International Symposium on Field Programmable Gate Arrays (FPGA)"},
@string{CAV=    "Computer-Aided Verification (CAV)"},
@string{CODES=  "International Symposium on Hardware/Software Codesign (CODES)"},
@string{FPL=    "International Conference on Field Programmable Logic and Applications (FPL)"},
@string{EUROPAR="European Conference on Parallel Processing (EUROPAR)"},
@string{CGO=    "International ACM/IEEE Symposium on Code Generation and Optimization (CGO)"},
@string{PPOPP=  "ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP)"},
@string{CC=     "International Conference on Compiler Construction (CC)"},
@string{PACT=   "International Conference on Parallel Architectures and Compilation Techniques (PACT)"},
@string{LCPC=   "Workshop on Languages and Compilers for Parallel Computing (LCPC)"},
@string{ICCAD=  "IEEE/ACM International Conference on Computer-aided design (ICCAD)"},
@string{MICRO=  "IEEE/ACM International Symposium on Microarchitecture (MICRO)"},
@string{SAS=    "International Static Analysis Symposium (SAS)"},
@string{TACAS=  "International Conference on Tools and Algorithms for the
                 Construction and Analysis of Systems (TACAS)"},
@string{CASES=  "International Conference on Compilers, Architecture,
                 and Synthesis for Embedded Systems (CASES)"},
@string{HPCA=   "International Symposium on High-Performance Computer Architecture (HPCA)"},
@string{ASYNC=  "International Symposium on Advanced Research in Asynchronous Circuits and Systems (ASYNC)"},
@string{ICS=    "{ACM} International Conference on Supercomputing (ICS)"},
@string{ICCD=   "International Conference on Computer Design (ICCD)"},
@string{SIGGRAPH="Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH)"},
@string{SOSP=   "ACM Symposium on Operating Systems Principles (SOSP)"},
@string{FPT=    "IEEE International Conference on Field-Programmable Technology (FPT)"},
@string{SPAA=   "ACM Symposium on Parallel Algorithms and Architectures (SPAA)"},
@string{OSDI=   "Symposium on Operating System Design and Implementation (OSDI)"},
@string{ISLPED= "International Symposium on Low-Power Design (ISLPED)"},
@string{IWLS=   "International Workshop on Logic synthesis (IWLS)"},
@string{VLSI=   "International Conference on VLSI Design (VLSI)"},
@string{ISCAS=  "IEEE International Symposium on Circuits and Systems (ISCAS)"},
@string{USENIX= "USENIX Annual Technical Conference (USENIX)"},
@string{ISSCC=  "IEEE International Solid-State Circuits Conference (ISSCC)"},
@string{LCTES=  "ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems(LCTES)"},
@string{ICFP=   "International Conference on Functional Programming (ICFP)"},
@string{NDSS=   "Network and Distributed System Security Symposium (NDSS)"},
@string{USS=    "USENIX Security Symposium (USS)"},
@string{ISSP=   "IEEE Symposium on Security and Privacy (ISSP)"},
@string{SIGMOD= "ACM SIGMOD International conference on Management of data (SIGMOD)"},
@string{VLDB=   "International Conference of Very Large Data Bases (VLDB)"},
@string{CIDR =  "Conference on Innovative Data Systems Research (CIDR)"},
@string{SIGCOMM="SIGCOMM"},

%Journals
@string{JPDC=	"Journal of Parallel and Distributed Computing (JPDC)"},
@string{CACM=	"Communications of the ACM (CACM)"},
@string{JACM=	"Journal of the ACM (JACM)"},
@string{TCS=    "Transactions on Computer Systems (TOCS)"},
@string{TOCS=   "Transactions on Computer Systems (TOCS)"},
@string{TOC=    "IEEE Transactions on Computers (TOC)"},
@string{TOPLAS= "ACM Transactions on Programming Languages and Systems (TOPLAS)"},
@string{JSSC=   "IEEE Journal of Solid-State Circuits (JSSC)"},
%Others
@string{LNCS=	"Lecture Notes in Computer Science (LNCS)"},
@string{springer="Springer Verlag"}
%%

@article{McKeown-ccr08,
 author = {McKeown, Nick and Anderson, Tom and Balakrishnan, Hari and Parulkar, Guru and Peterson, Larry and Rexford, Jennifer and Shenker, Scott and Turner, Jonathan},
 title = {{OpenFlow}: Enabling Innovation in Campus Networks},
 journal = {SIGCOMM Comput. Commun. Rev.},
 issue_date = {April 2008},
 volume = 38,
 number = 2,
 month = mar,
 year = 2008,
 issn = {0146-4833},
 pages = {69--74},
 numpages = 6,
 url = {http://doi.acm.org/10.1145/1355734.1355746},
 doi = {10.1145/1355734.1355746},
 acmid = 1355746
}

@Misc{rfc7348,
  author = 	 {M. Mahalingam Storvisor and D. Dutt and K. Duda and P. Agarwal and L. Kreeger and T. Sridhar and M. Bursell and C. Wright},
  title = 	 {{Virtual eXtensible Local Area Network (VXLAN)}: A Framework
   for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks},
  howpublished = {\url{https://tools.ietf.org/html/rfc7348}},
  month = 	 {August},
  year = 	 2014}

@Misc{rfc7426,
  author = 	 {Evangelos Haleplidis and Kostas Pentikousis and Spyros Denazis and Jamal Hadi Salim and David Meyer and Odysseas Koufopavlou},
  title = 	 {Software-Defined Networking ({SDN}): Layers and Architecture Terminology},
  howpublished = {\url{https://tools.ietf.org/html/rfc7426}},
  month = 	 {January},
  year = 	 2015,
  note = 	 {RFC 7426}}

@Misc{bmv2,
  author = 	 {Antonin Bas},
  title = 	 {The {P4} Behavioral Model version 2},
  howpublished = {\url{https://github.com/p4lang/behavioral-model}},
  year = 	 {Retrieved May 2017}}

@Misc{p416-spec17,
  author = 	 {P4.org},
  title = 	 {{P4-16} Language specification},
  howpublished = {\url{https://github.com/p4lang/p4-spec/tree/master/p4-16/spec}},
  month = 	 {May},
  year = 	 2017}

@Misc{p4c-compiler,
  title = 	 {{P4-16} compiler reference implementation},
  howpublished = {\url{https://github.com/p4lang/p4c}},
  note = 	 {Retrieved May 2017}}

 @Misc{corbet-lwn14,
  author = 	 {Jonathan Corbet},
  title = 	 {Attaching {eBPF} programs to sockets},
  howpublished = {\url{https://en.wikipedia.org/wiki/LWN.net}},
  month = 	 {December},
  year = 	 2014}

@Misc{p4lang,
  title = 	 {P4 github repository},
  note = 	 {Retrieved May 2017},
  howpublished = {\url{https://github.com/p4lang}}}

@Misc{pcapng,
	title = 	 {Pcapng Specification Repository},
	note = 	 {Retrieved October 2018},
	howpublished = {\url{https://github.com/pcapng/pcapng}}}



@Misc{p4org,
  title = 	 {{P4 Consortium}},
  howpublished = {\url{http://p4.org}}}

@InProceedings{bosshart-ccr14,
  author = 	 {Pat Bosshart and Dan Daly and Glen Gibb and Martin Izzard and Nick McKeown and Jennifer Rexford and Cole Schlesinger and Dan Talayco and Amin Vahdat and George Varghese and David Walker},
  title = 	 {Programming Protocol-Independent Packet Processors},
  booktitle =    {ACM SIGCOMM Computer Communications Review (CCR)},
  year = 	 2014,
  volume = 	 44,
  number = 	 3,
  month = 	 {July},
  url = {http://www.sigcomm.org/ccr/papers/2014/July/0000000.0000004}
}

@InProceedings{mccanne-usenix93,
  author = 	 {Steven McCanne and Van Jacobson},
  title = 	 {The {BSD} Packet Filter: A New Architecture for User-level Packet Capture},
  booktitle = {USENIX Conference},
  year = 	 1993,
  month = 	 {January},
  url = {http://usenix.org/publications/library/proceedings/sd93/mccanne.pdf}
}

@Misc{mckeown-blog16,
  author = 	 {Nick McKeown and Jen Rexford},
  title = 	 {Clarifying the differences between {P4} and {OpenFlow}},
  howpublished = {\url{http://p4.org/p4/clarifying-the-differences-between-p4-and-openflow/}},
  month = 	 {May},
  year = 	 2016}

@Misc{herbert-xdp16,
  author = 	 {Tom Herbert and Alexei Starovoitov},
  title = 	 {{eXpress Data Path (XDP)}, Programmable and high-performance networking data path},
  howpublished = {\url{https://github.com/iovisor/bpf-docs/blob/master/Express_Data_Path.pdf}},
  month = 	 {May},
  year = 	 2016}

@InProceedings{shahbaz-sigcomm16,
  title = 	 {{PISCES}: A Programmable, Protocol-Independent Software Switch},
  author = 	 {Muhammad Shahbaz and Sean Choi and Ben Pfaff and Changhoon Kim and Nick Feamster and Nick McKeown and Jennifer Rexford},
  booktitle =    SIGCOMM,
  year = 	 2016,
  month = 	 {August 22-24},
  address = 	 {Florianopolis, Brazil}}

@Misc{budiu-p4-ebpf15,
  author = 	 {Mihai Budiu},
  title = 	 {Compiling P4 to {eBPF}},
  howpublished = {\url{https://github.com/iovisor/bcc/tree/master/src/cc/frontends/p4}},
  month = 	 {September},
  year = 	 2015}

@Article{boehm-spe88,
  author = 	 {Hans-Juergen Boehm and Mark Weiser},
  title = 	 {Garbage Collection in an Uncooperative Environment},
  journal = 	 {Software Practice and Experience},
  year = 	 1988,
  volume = 	 18,
  number = 	 9,
  pages = 	 {807--820}}

@Misc{visitor,
  title = 	 {Visitor Pattern},
  howpublished = {\url{https://en.wikipedia.org/wiki/Visitor_pattern}},
  year = 	 {Retrieved May 2017}}

@inproceedings{bosshart-sigcomm13,
 author = {Bosshart, Pat and Gibb, Glen and Kim, Hun-Seok and Varghese, George and McKeown, Nick and Izzard, Martin and Mujica, Fernando and Horowitz, Mark},
 title = {Forwarding Metamorphosis: Fast Programmable Match-action Processing in Hardware for {SDN}},
 booktitle = SIGCOMM,
 year = 2013,
 location = {Hong Kong, China},
 pages = {99--110},
 numpages = 12,
 url = {http://doi.acm.org/10.1145/2486001.2486011},
 publisher = {ACM},
 keywords = {reconfigurable match tables, rmt model, sdn},
}

@Misc{islam-05,
  author = 	 {M. M. Islam},
  title = 	 {Java Annotations: An Introduction},
  howpublished = {\url{http://www.developer.com/java/other/article.php/3556176}},
  month = 	 {October},
  year = 	 2005}

@Misc{javamaps93,
  author = 	 {{Sun Microsystems}},
  title = 	 {Interface {\verb|Map<K, V>|}},
  howpublished = {\url{https://docs.oracle.com/javase/7/docs/api/java/util/Map.html}},
  year = 	 1993}

@InProceedings{lattner-lcpc04,
  author={Chris Lattner and Vikram Adve},
  title="{The {LLVM} Compiler Framework and Infrastructure Tutorial}",
  month={September},
  year={2004},
  address={West Lafayette, Indiana},
  booktitle={LCPC Mini Workshop on Compiler Research Infrastructures}
}

@InProceedings{pnueli-tacas98,
  author = 	 {Amir Pnueli and M. Siegel and and Eli Singerman},
  title = 	 {Translation validation},
  booktitle = {International Conference on Tools and Algorithms for Construction and
Analysis of Systems (TACAS)},
  year = 	 1998,
  pages = 	 {151-166}}

@InProceedings{minao-hspr18,
  author =       {Sebastiano Miano and Matteo Bertrone and Fulvio
                  Risso and Massimo Tumolo and Mauricio Vásquez
                  Bernal},
  title =        {Creating Complex Network Services with eBPF:
                  Experience and Lessons Learned},
  booktitle =    {IEEE High Performance Switching and Routing
                  (HPSR18)},
  year =         2018,
  month =        {June},
  address =      {Bucharest, Romania},
  url =          {http://fulvio.frisso.net/files/18HPSR-ebpf-lessons-learned.pdf},
  abstract =     {The extended Berkeley Packet Filter (eBPF) is a
                  recent technology available in the Linux kernel that
                  enables flexible data processing. However, so far
                  the eBPF was mainly used for monitoring tasks such
                  as memory, CPU, page faults, traffic, and more, with
                  a few examples of traditional network services,
                  e.g., that modify the data in transit. In fact, the
                  creation of complex network functions that go beyond
                  simple proof-of- concept data plane applications has
                  proven to be challenging due to the several
                  limitations of this technology, but at the same time
                  very promising due to some characteristics (e.g.,
                  dynamic recompilation of the source code) that are
                  not available elsewhere.  Based on our experience,
                  this paper presents the most promising
                  characteristics of this technology and the main
                  encountered limitations, and we envision some
                  solutions that can mitigate the latter. We also
                  summarize the most important lessons learned while
                  exploiting eBPF to create complex network functions
                  and, finally, we provide a quantitative
                  characterization of the most significant aspects of
                  this technology.}
}

@InProceedings{bertin-netdev17,
	author =       {Gilberto Bertin},
	title =        {"XDP in practice: Integrating XDP into our DDoS Mitigation
	Pipeline},
	booktitle =     {Technical Conference on Linux Networking (Netdev 2.1)},
	year =         2017,
	month =        {Apr},
	address =      {Montreal, Canada}
}

@Article{budiu-osr17,
   author =	{Mihai Budiu and Chris Dodd},
   title =	{The {P4-16} Programming Language},
   journal =	{ACM SIGOPS Operating Systems Review},
   volume =	{51},
   number =	{1},
   pages =	{5--14},
   month =	{August},
   year =	{2017},
   abstract =	{P4 is a language for expressing how packets are processed by the
                 data-plane of a programmable network element such as a hardware or
                 software switch, network interface card, router or network function
                 appliance. This document describes the most recent version of the
                 language, P4-16, and the reference implementation of the P4-16
                 compiler.},
   url =	{http://budiu.info/work/p4-osr17.pdf},
   confweb =	{https://dl.acm.org/citation.cfm?id=3139645&picked=prox},
   doi =	{https://dl.acm.org/citation.cfm?doid=3139645.3139648}
}

@inproceedings{valgrind,
	author = {Nethercote, Nicholas and Seward, Julian},
	title = {Valgrind: A Framework for Heavyweight Dynamic Binary
	Instrumentation},
	booktitle = {Proceedings of the 28th ACM SIGPLAN Conference on Programming
	Language Design and Implementation},
	series = {PLDI '07},
	year = {2007},
	isbn = {978-1-59593-633-2},
	location = {San Diego, California, USA},
	pages = {89--100},
	numpages = {12},
	url = {http://doi.acm.org/10.1145/1250734.1250746},
	doi = {10.1145/1250734.1250746},
	acmid = {1250746},
	publisher = {ACM},
	address = {New York, NY, USA}
}

@inproceedings{llvm,
	author = {Lattner, Chris and Adve, Vikram},
	title = {LLVM: A Compilation Framework for Lifelong Program Analysis \&
	Transformation},
	booktitle = {Proceedings of the International Symposium on Code Generation
	and Optimization: Feedback-directed and Runtime Optimization},
	series = {CGO '04},
	year = {2004},
	isbn = {0-7695-2102-9},
	location = {Palo Alto, California},
	pages = {75--},
	url = {http://dl.acm.org/citation.cfm?id=977395.977673},
	acmid = {977673},
	publisher = {IEEE Computer Society},
	address = {Washington, DC, USA},
}

@Misc{p4-ebpf-backend,
  title =     {A P4 to eBPF compiler back-end},
  howpublished = {\url{https://github.com/p4lang/p4c/blob/master/backends/ebpf/README.md}},
  note =      {Retrieved September 2019}}

@Misc{p4-xdp-backend,
  title =     {A P4 to XDP compiler back-end},
  howpublished = {https://github.com/vmware/p4c-xdp},
  note =      {Retrieved September 2019}}

@Misc{trex,
  author =     {Cisco Inc},
  title =      {TRex: Realistic Traffic Generator},
  howpublished = {\url{https://trex-tgn.cisco.com/}}}

@Misc{wireshark,
	author =     {Combs, Gerald},
	title =      {Wireshark: Go Deep},
	howpublished = {\url{https://www.wireshark.org/}}}

@Misc{iproute,
	author =     {Kuznetsov, Alexey},
	title =      {Iproute2: Linux Network Management},
	howpublished = {\url{https://wiki.linuxfoundation.org/networking/iproute2}}}

@Misc{tcpdump,
	author =     {Tcpdump Group},
	title =      {Tcpdump - Dump Traffic on a Network},
	howpublished = {\url{http://www.tcpdump.org/}}}

@Misc{gdb,
	author =     {GNU Project},
	title =      {GDB: The GNU Project Debugger},
	howpublished = {\url{https://www.gnu.org/software/gdb/}}}

@article{wahbe:93,
    author = "R.~Wahbe and S.~Lucco and T.E.~Anderson and S.L.~Graham",
    title = "Efficient Software-Based Fault Isolation",
    journal = "ACM SIGOPS Operating Systems Review",
    volume = "27",
    number = "5",
    month = "December",
    pages = "203--216",
    year = "1993" }

@Misc{genericxdp,
  author = 	 {David Miller},
  title = 	 {{Generic XDP}},
  howpublished = {\url{https://lwn.net/Articles/720072/}},
  month = 	 {April},
  year = 	 2017}

@Misc{xdptcp,
  author = 	 {Matteo Bertrone},
  title = 	 {{Generic XDP and veth}},
  howpublished = {\url{https://www.spinics.net/lists/xdp-newbies/msg00440.html}},
  month = 	 {Jan},
  year = 	 2018}

@inproceedings{xdpconext18,
  title={{The eXpress Data Path: Fast Programmable Packet Processing in the Operating System Kernel}},
  author={H{\o}iland-J{\o}rgensen, Toke and Brouer, Jesper Dangaard and Borkmann, Daniel and Fastabend, John and Herbert, Tom and Ahern, David and Miller, David},
  booktitle={CoNEXT'18: International Conference on emerging Networking EXperiments and Technologies},
  year={2018},
  organization={ACM Digital Library}
}
